---
title: MyBatis mapper
---

mapper是Java方法与SQL语句之间的映射关系，是MyBatis的核心组件之一。

![5eb78534099f8dc511500496](C:\Users\21129\Downloads\5eb78534099f8dc511500496.jpg)

## 新建 mapper

mapper 只是一个抽象的概念，它其实就是 Java 里面的一个接口类，我们并不需要实现这个接口类，MyBatis 会通过动态代理自动帮我们执行接口方法对应的 SQL 语句。

接下来，我们以 UserMapper 为例，看一看 mapper 是如何定义和组成的。

首先，在 `pub.wkq.mybatis` 包下新建 mapper 包，并在 mapper 包下新建接口类 UserMapper.java 。如下：

```java
package pub.wkq.mybatis.mapper;

/**
 * UserMapper.java
 */
public interface UserMapper {
    
}

```

### 注解方式

为 UserMapper 添加一个方法 selectUsernameById ，该方法的作用是**通过用户id查询用户名称**，如下：

```java title='selectUsernameById方法接受 id 参数，返回用户名称'
package pub.wkq.mybatis.mapper;

import org.apache.ibatis.annotations.Select;

/**
 * UserMapper.java
 */
public interface UserMapper {
    /**
     * 根据用户id查询用户信息
     *
     * @param id 用户id
     * @return 用户信息
     */
    @Select("SELECT username FROM imooc_user WHERE id = #{id}")
    String selectUsernameById(Integer id);
}
```

SELECT 注解对应 SQL 的 select 查询，注解中的语句就是相应的 SQL 语句。

### XML 方式

XML方式是更加强大和易用的一种方式，虽然它没有注解那么方便，但是功能更强、更易维护，是 MyBatis 官方推荐的一种方式。

在 mapper 包中，我们
